package com.hd.sup.modules.vehicle.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hd.sup.modules.alarm.model.AlarmDailyStatis;
import com.hd.sup.modules.poi.model.VehicleAlarmExport;
import com.hd.sup.modules.vehicle.model.VehicleAlarmDailyStatis;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author chentl123
 * @since 2020-12-28
 */
public interface IVehicleAlarmDailyStatisService extends IService<VehicleAlarmDailyStatis> {


    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 车辆维度报警信息分页查询
     * @date 2020/12/30 4:25 下午
     * @params [page, vehicleAlarmDailyStatis]
     */
    List<Map<String, Object>> getAlarmVehiclePage(Page<Map<String, Object>> page, VehicleAlarmDailyStatis vehicleAlarmDailyStatis);

    /**
     * @return java.util.List<com.hd.sup.modules.vehicle.export.VehicleAlarmExport>
     * @author chentl
     * @description 获取导出数据
     * @date 2021/2/23 9:38 上午
     * @params [page, vehicleAlarmDailyStatis]
     */
    List<VehicleAlarmExport> getAlarmVehicleExportData(Page<VehicleAlarmDailyStatis> page, VehicleAlarmDailyStatis vehicleAlarmDailyStatis);

    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 获取车辆报警趋势数据
     * @date 2021/2/2 10:27 上午
     * @params [vehicleAlarmDailyStatis, alarmType, deptIds]
     */
    List<Map<String, Object>> getVehicleAlarmTrendData(VehicleAlarmDailyStatis vehicleAlarmDailyStatis, String alarmType, List<String> deptIds);

    /**
     * @return java.util.List<com.hd.sup.modules.vehicle.model.VehicleAlarmDailyStatis>
     * @author chentl
     * @description 获取当天统计数据
     * @date 2021/1/11 11:55 上午
     * @params [currentDate]
     */
    List<VehicleAlarmDailyStatis> getTodayStatisData(String currentDate);

    /**
     * @return void
     * @author chentl
     * @description 根据 enterprise_no，statis_date,alarm_type 更新指定报警统计数据
     * @date 2021/1/11 11:59 上午
     * @params [vehicleAlarmDailyStatis]
     */
    void refreshVehicleAlarmDailyStatis(VehicleAlarmDailyStatis vehicleAlarmDailyStatis);


    /**
     * @return java.util.Map<java.lang.String, java.lang.Object>
     * @author chentl
     * @description 分析报告 车辆报警数 报警率数据封装
     * @date 2021/2/4 4:49 下午
     * @params [param, timeFlag,pre]
     */
    Map<String, Object> generateAlarmReportData(VehicleAlarmDailyStatis param, String timeFlag, boolean pre);

    /**
     * @return java.util.Map<java.lang.String, java.lang.Object>
     * @author chentl
     * @description 查询报警分布
     * @date 2021/2/19 11:38 上午
     * @params [param, timeFlag]
     */
    Map<String, Object> getAlarmTypeDistribution(VehicleAlarmDailyStatis param, String timeFlag, boolean pre);

    ;

    /**
     * @return java.util.Map<java.lang.String, java.lang.Object>
     * @author chentl
     * @description 分析报告 企业车辆报警比 数据封装
     * @date 2021/2/4 4:49 下午
     * @params [param, timeFlag,pre]
     */
    Map<String, Object> enterpriseVehicleAlarmRatioReport(VehicleAlarmDailyStatis param, String timeFlag, boolean pre);

    /**
     * @return java.util.Map<java.lang.String, java.lang.Object>
     * @author chentl
     * @description 分析报告 单车报警比 数据封装
     * @date 2021/2/19 10:36 上午
     * @params [param, timeFlag, pre]
     */
    Map<String, Object> vehicleAlarmRatioReport(VehicleAlarmDailyStatis param, String timeFlag, boolean pre);

    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 查询企业车辆报警比数据
     * @date 2021/2/19 9:03 上午
     * @params [param]
     */
    List<Map<String, Object>> getEnterpriseAlarmRatioTop10(VehicleAlarmDailyStatis param);

    /**
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @author chentl
     * @description 查询单车报警比数据
     * @date 2021/2/19 10:39 上午
     * @params [param]
     */
    List<Map<String, Object>> getVehicleAlarmRatioTop10(VehicleAlarmDailyStatis param);

}
